package tabla_simbolos;

import lexico.Declaracion.Tipo;

public class Array extends TipoPadre{
	/*Atributos*/
	private Tipo t;
	private int nelems;
	private int tam;
	private Variable propsVar;
	private Referencia propsRef;
	private Array propsArray;
	private Registro propsReg;
	private Puntero propsPunt;
	private TipoBasico propsTBas;
	
	
	
	/*Constructora*/
	public Array(Tipo tipo, int nelems, Variable tbase, int tam) {
		this.setT(tipo);
		this.setNelems(nelems);
		this.setPropsVar(tbase);
		this.setPropsRef(null);
		this.setPropsArray(null);
		this.setPropsReg(null);
		this.setPropsPunt(null);
		this.setPropsTBas(null);
		this.setTam(tam);
	}
	
	public Array(Tipo tipo, int nelems, Referencia tbase, int tam) {
		this.setT(tipo);
		this.setNelems(nelems);
		this.setPropsRef(tbase);
		this.setPropsVar(null);
		this.setPropsReg(null);
		this.setPropsArray(null);
		this.setPropsPunt(null);
		this.setPropsTBas(null);
		this.setTam(tam);
	}
	
	public Array(Tipo tipo, int nelems, Array tbase, int tam) {
		this.setT(tipo);
		this.setNelems(nelems);
		this.setPropsArray(tbase);
		this.setPropsRef(null);
		this.setPropsVar(null);
		this.setPropsReg(null);
		this.setPropsPunt(null);
		this.setPropsTBas(null);
		this.setTam(tam);
	}
	
	public Array(Tipo tipo, int nelems, Registro tbase, int tam) {
		this.setT(tipo);
		this.setNelems(nelems);
		this.setPropsReg(tbase);
		this.setPropsRef(null);
		this.setPropsVar(null);
		this.setPropsArray(null);
		this.setPropsPunt(null);
		this.setPropsTBas(null);
		this.setTam(tam);
	}
	
	public Array(Tipo tipo, int nelems, Puntero tbase, int tam) {
		this.setT(tipo);
		this.setNelems(nelems);
		this.setPropsPunt(tbase);
		this.setPropsRef(null);
		this.setPropsVar(null);
		this.setPropsArray(null);
		this.setPropsReg(null);
		this.setTam(tam);
		this.setPropsTBas(null);
	}
	public Array(Tipo tipo, int nelems, TipoBasico tbase, int tam) {
		this.setT(tipo);
		this.setNelems(nelems);
		this.setPropsPunt(null);
		this.setPropsRef(null);
		this.setPropsVar(null);
		this.setPropsArray(null);
		this.setPropsReg(null);
		this.setTam(tam);
		this.setPropsTBas(tbase);
	}
	
	public void setPropsTBas(TipoBasico tbase) {this.propsTBas=tbase;	}
	public TipoBasico getPropsTBas(){return this.propsTBas;}

	/*Get&Set*/
	public void setT(Tipo t) {this.t = t;}
	public Tipo getT() {return t;}
	public void setNelems(int nelems) {this.nelems = nelems;}
	public int getNelems() {return nelems;}
	public void setTam(int tam) {this.tam = tam;}
	public int getTam() {return tam;}
	public Variable getPropsVar() {return propsVar;}
	public void setPropsVar(Variable propsVar) {this.propsVar = propsVar;}
	public Referencia getPropsRef() {return propsRef;}
	public void setPropsRef(Referencia propsRef) {this.propsRef = propsRef;}
	public Array getPropsArray() {return propsArray;}
	public void setPropsArray(Array propsArray) {this.propsArray = propsArray;}
	public Registro getPropsReg() {return propsReg;}
	public void setPropsReg(Registro propsReg) {this.propsReg = propsReg;}
	public Puntero getPropsPunt() {return propsPunt;}
	public void setPropsPunt(Puntero propsPunt) {this.propsPunt = propsPunt;}

}
